package cn.yemuysy.code.check.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Set;

/**
 * 表示在输入文本中找到的侵权词的匹配结果。
 * <p>
 * 此类封装了关于一次成功匹配的所有信息，包括命中的原始文本、
 * 对应的侵权词、适用的站点、是否不区分大小写以及在文本中的位置。
 * </p>
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class InfringingWordMatch {
    /**
     * 在输入文本中实际找到的原始片段。
     * 例如，如果侵权词是 "test" (不区分大小写)，此字段可能是 "Test" 或 "TEST"。
     */
    private String originalText;

    /**
     * 匹配到的标准侵权词。
     * 这是在词库中定义的原始单词，例如 "test"。
     */
    private String infringingWord;

    /**
     * 该侵权词适用的站点集合。
     * 详见 {@link InfringingWord#getApplicableSites()}。
     * 如果集合包含 "*"，则表示适用于所有站点。
     */
    private Set<String> applicableSites;

    /**
     * 标记此次匹配是否为不区分大小写匹配。
     * 如果为 true，表示匹配时忽略了大小写差异。
     */
    private boolean caseInsensitive;

    /**
     * 匹配项在原始文本中的起始位置（索引）。
     */
    private int position;
}
